

import java.awt.Point;
public class Movil {
	private Point posicion;
	protected int radioDeColision;
	protected LimitesDelEscenario limitesDeMovimiento;
	boolean estaDestruido;
	
	public Movil() {
		//CONSTRUCTOR DE LA CLASE MOVIL
		estaDestruido = false;
		Escenario escenario = Escenario.getInstancia();
		limitesDeMovimiento = escenario.getLimites();
	}
	public void colisionarConAvion(Avion unAvion) {
		//Por defecto todos los aviones al chocar contra otro, se destruyen.
		if(this.informarColisionCon(unAvion)) {
			this.destruir();
		}

	}
	public void destruir() {
		estaDestruido = true;
	}
	
	public Point getPosicion() {
		return posicion;
	}
	
	public int getRadioDeColision() {
		return radioDeColision;
	}
	
	public boolean informarColisionCon(Movil unMovil){
		//Devuelve true si hay colision entre self y unMovil
		int distanciaActual;
		int distanciaMinima;
		
		distanciaActual = (int) (this.getPosicion()).distance(unMovil.getPosicion());
		distanciaMinima = (this.getRadioDeColision() + unMovil.getRadioDeColision());
		return (distanciaActual <= distanciaMinima);
	}
	
	public boolean estaDestruido(){
		return estaDestruido;
	}
	
	public void setPosicion(Point unPunto){
		//Definicion de la posicion del movil
		Point limiteMinimo;
		Point limiteMaximo;
		limiteMinimo = limitesDeMovimiento.getLimiteMinimo();
		limiteMaximo = limitesDeMovimiento.getLimiteMaximo();
		
		if(((unPunto.x < limiteMinimo.x) && (unPunto.y < limiteMinimo.y)) ||
				((unPunto.x > limiteMaximo.x)&& (unPunto.y > limiteMaximo.y))){
			throw new Error("El punto debe estar dentro de los limites del escenario");
		}
		posicion = unPunto;
	}
}
